home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sources.misc
- subject: v08i106: Make Version 1.5 (Part 3 of 3)
- From: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
- Reply-To: greggy@etude.UUCP (Greg Yachuk)
-
- Posting-number: Volume 8, Issue 106
- Submitted-by: greggy@etude.UUCP (Greg Yachuk)
- Archive-name: make.gy/part03
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 3 (of 3)."
- # Contents: decl.h default.dos default.mk make.h makefile makefile.dos
- # tstring.h
- # Wrapped by greggy@etude on Mon Oct 30 19:10:09 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'decl.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'decl.h'\"
- else
- echo shar: Extracting \"'decl.h'\" \(2732 characters\)
- sed "s/^X//" >'decl.h' <<'END_OF_FILE'
- X/*
- X * decl.h
- X *
- X * 88-10-01 v1.0 created by greg yachuk, placed in the public domain
- X * 88-10-06 v1.1 changed prerequisite list handling
- X * 88-11-11 v1.2 fixed some bugs and added environment variables
- X * 89-07-12 v1.3 stop appending shell commands, and flush output
- X * 89-08-01 v1.4 AB lots of new options and code
- X * 89-10-30 v1.5 greggy -f -S -q options, took some changes from v1.4
- X *
- X */
- X
- X#ifdef __STDC__
- Xextern int main(int argc, char **argv);
- Xextern int make_args(int argc, char **argv);
- Xextern char **grow_list(char **list, int *len);
- Xextern FILE *fopenp(char *fname, char *type);
- Xextern int make(char *targname, int worry);
- Xextern int default_rule(char *targname, struct targnode * targetp, int worry, int mustbuild);
- Xextern char *get_preqname(struct targnode * targp, char *suffix, char *basename);
- Xextern int add_metas(char *basename, char *preqname, char *targname);
- Xextern int split_meta(char *sym, char *name);
- Xextern int touch_file(char *targname);
- Xextern int display_prereq(char *targname, long targtime, char *preqname, long preqtime);
- Xextern long file_time(char *fname, int built);
- Xextern int usage(void);
- Xextern int build(struct shellnode * *shellp);
- Xextern int new_make(char **argv);
- Xextern int parse(FILE * fd);
- Xextern int link_targs(struct targnode * *targs, struct filenode * *preqs, struct shellnode * *shells);
- Xextern int add_macro(char *input, int scmd);
- Xextern int add_symbol(char *name, char *value, int scmd);
- Xextern struct symnode *get_symbol(char *name, int scmd);
- Xextern struct symnode *dup_symbol(struct symnode * sp, char *svalue);
- Xextern struct targnode *add_target(char *name);
- Xextern struct targnode *hash_target(char *name, unsigned short *maskp);
- Xextern struct filenode *add_file(char *name);
- Xextern struct filenode *hash_file(char *name, unsigned short *maskp);
- Xextern char **append_node(char **node, char **adds, int size);
- Xextern struct shellnode *add_shell(char *input);
- Xextern char *breakout(char *input);
- X#else
- Xextern int main();
- Xextern int make_args();
- Xextern char **grow_list();
- Xextern FILE *fopenp();
- Xextern int make();
- Xextern int default_rule();
- Xextern char *get_preqname();
- Xextern int add_metas();
- Xextern int split_meta();
- Xextern int touch_file();
- Xextern int display_prereq();
- Xextern long file_time();
- Xextern int usage();
- Xextern int build();
- Xextern int new_make();
- Xextern int parse();
- Xextern int link_targs();
- Xextern int add_macro();
- Xextern int add_symbol();
- Xextern struct symnode *get_symbol();
- Xextern struct symnode *dup_symbol();
- Xextern struct targnode *add_target();
- Xextern struct targnode *hash_target();
- Xextern struct filenode *add_file();
- Xextern struct filenode *hash_file();
- Xextern char **append_node();
- Xextern struct shellnode *add_shell();
- Xextern char *breakout();
- X#endif
- END_OF_FILE
- if test 2732 -ne `wc -c <'decl.h'`; then
- echo shar: \"'decl.h'\" unpacked with wrong size!
- fi
- # end of 'decl.h'
- fi
- if test -f 'default.dos' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'default.dos'\"
- else
- echo shar: Extracting \"'default.dos'\" \(2572 characters\)
- sed "s/^X//" >'default.dos' <<'END_OF_FILE'
- X### this is the default makefile for DOS: default.mk
- X
- XSUFFIXES = .c .asm .l .y .ec
- X.SUFFIXES : $(SUFFIXES)
- X
- X# ASM section
- XAS = masm
- XASFLAGS = /mx
- XCOMPILE.s= $(AS) $(ASFLAGS)
- X.asm.exe :
- X $(COMPILE.s) $<;
- X $(LINK.c) -o $@ $*.obj $(LDFLAGS)
- X $(RM) $*.obj
- X.asm.obj :
- X $(COMPILE.s) $<;
- X.asm.o :
- X $(COMPILE.s) $<;
- X mv $*.obj $*.o
- X
- X# C section
- XCC = cl -A$(MODEL)
- XCFLAGS = /Ox /G2
- XCOMPILE.c= $(CC) $(CFLAGS) -c
- X.c.exe :
- X $(LINK.c) -o $@ $< $(LDFLAGS)
- X $(RM) $*.obj
- X.c.o :
- X $(COMPILE.c) /Fo$*.o $<
- X.c.obj :
- X $(COMPILE.c) $<
- X
- X# D section (ANSI C declaration headers)
- X.c.d :
- X echo #ifndef NOPROTOTYPES > $*.tmp
- X $(CC) -DNOPROTOTYPES -Zg $< >> $*.tmp
- X echo #endif >> $*.tmp
- X +updexhdr $*.tmp $*.d
- X $(RM) $*.tmp
- X
- X# I section (preprocessed C files)
- X.c.i :
- X $(COMPILE.c) -P $<
- X
- X# ESQL/C section
- XESQL = esql
- XEFLAGS =
- XCOMPILE.e= $(ESQL) $(EFLAGS)
- X.ec.exe :
- X $(COMPILE.e) -e $<
- X $(LINK.c) -o $@ $*.c $(LDFLAGS)
- X $(RM) $*.obj $*.c
- X.ec.o :
- X $(COMPILE.e) -e $<
- X $(COMPILE.c) /Fo$*.o $*.c
- X $(RM) $*.c
- X.ec.obj :
- X $(COMPILE.e) -e $<
- X $(COMPILE.c) $*.c
- X $(RM) $*.c
- X.ec.c :
- X $(COMPILE.e) -e $<
- X
- X# Lex section
- XLEX = flex
- XLFLAGS = -I
- XLEX.l = $(LEX) $(LFLAGS) -t
- X.l.exe :
- X $(LEX.l) $< > $*.c
- X $(LINK.c) -o $@ $*.c $(LDFLAGS)
- X $(RM) $*.obj $*.c
- X.l.c :
- X $(LEX.l) $< > $@
- X.l.o :
- X $(LEX.l) $< > $*.c
- X $(COMPILE.c) /Fo$*.o $*.c
- X $(RM) $*.c
- X.l.obj :
- X $(LEX.l) $< > $*.c
- X $(COMPILE.c) $*.c
- X $(RM) $*.c
- X
- X# YACC Section
- XYACC = bison
- XYFLAGS =
- XYACC.y = $(YACC) $(YFLAGS)
- X.y.exe:
- X $(YACC.y) $<
- X $(LINK.c) -o $@ $*.c $(LDFLAGS)
- X $(RM) $*.obj $*.c
- X.y.h:
- X $(YACC.y) -d -y $<
- X $(RM) ytab.c
- X $(MV) ytab.h $@
- X.y.c:
- X $(YACC.y) $<
- X.y.o:
- X $(YACC.y) $<
- X $(COMPILE.c) /Fo$*.o $*.c
- X $(RM) $*.c
- X.y.obj:
- X $(YACC.y) $<
- X $(COMPILE.c) $*.c
- X $(RM) $*.c
- X
- X# BSD Unix Misc section
- X#A = .a
- X#AR = ar
- X#ARFLAGS =
- X#BIN = /bin
- X#CDEBUG = -g
- X#CP = cp
- X#E =
- X#EDITOR = /usr/bin/vi
- X#GFLAGS =
- X#GET = get
- X#LDFLAGS =
- X#LD = ld
- X#LIBDIR =
- X#MAKE = make
- X#MKDEPEND = makedepend
- X#MODEL =
- X#MV = mv
- X#O = .o
- X#RANLIB = ranlib
- X#RM = rm -f
- X#SHELL = /bin/csh
- X
- X# DOS Misc section
- XA = .lib
- XAR = lib
- XARFLAGS =
- XBIN = C:\bin
- XCDEBUG = /Od /Zi
- XCP = cp
- XE = .exe
- XEDITOR = $(BIN)\vi
- XGFLAGS =
- XGET = echo cannot get
- XLDFLAGS = /link /noe /noi $(LIBS)
- XLD = $(CC) $(CFLAGS)
- XLIBDIR = c:\msc5.1\lib
- XLINK.c = $(CC) $(CFLAGS)
- XMAKE = make
- XMKDEPEND = mkdepend
- XMODEL = S
- XMV = mv
- XO = .o
- XRANLIB = echo cannot ranlib
- XRM = rm -f
- XSHELL = command /c
- END_OF_FILE
- if test 2572 -ne `wc -c <'default.dos'`; then
- echo shar: \"'default.dos'\" unpacked with wrong size!
- fi
- # end of 'default.dos'
- fi
- if test -f 'default.mk' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'default.mk'\"
- else
- echo shar: Extracting \"'default.mk'\" \(1578 characters\)
- sed "s/^X//" >'default.mk' <<'END_OF_FILE'
- X### this is the default makefile for Unix: default.mk
- X
- XSUFFIXES = .o .c .f .e .r .y .l .s .sh .h
- X.SUFFIXES: $(SUFFIXES)
- X
- X# ASM section
- XAS = as
- XASFLAGS =
- X.s:
- X $(AS) $(ASFLAGS) $<
- X.s.o:
- X $(AS) $(ASFLAGS) -o $@ $<
- X
- X# C section
- XCC = cc
- XCFLAGS = -O
- X.c.o:
- X $(CC) $(CFLAGS) -c $<
- X
- X.c.i:
- X $(CC) $(CFLAGS) -P $<
- X
- X.c:
- X $(CC) $(CFLAGS) $(LDFLAGS) $< -o $@
- X
- X# Lex section
- XLEX = lex
- XLFLAGS =
- X.l.c:
- X $(LEX) $(LFLAGS) $<
- X $(MV) lex.yy.c $@
- X
- X.l.o:
- X $(LEX) $(LFLAGS) $<
- X $(CC) $(CFLAGS) -c lex.yy.c
- X $(RM) lex.yy.c
- X $(MV) lex.yy.o $@
- X
- X# YACC section
- XYACC = yacc
- XYFLAGS =
- X.y.c:
- X $(YACC) $(YFLAGS) $<
- X $(MV) y.tab.c $@
- X
- X.y.h:
- X $(YACC) $(YFLAGS) -d $<
- X $(RM) y.tab.c
- X $(MV) y.tab.h $@
- X
- X.y.o:
- X $(YACC) $(YFLAGS) $<
- X $(CC) $(CFLAGS) -c y.tab.c
- X $(RM) y.tab.c
- X $(MV) y.tab.o $@
- X
- X.sh:
- X cp $< $@
- X
- X# BSD Unix Misc section
- XA = .a
- XAR = ar
- XARFLAGS =
- XBIN = /bin
- XCDEBUG = -g
- XCP = cp
- XE =
- XEDITOR = /usr/bin/vi
- XGFLAGS =
- XGET = get
- XLDFLAGS =
- XLD = ld
- XLIBDIR =
- XMAKE = make
- XMKDEPEND = makedepend
- XMODEL =
- XMV = mv
- XO = .o
- XRANLIB = ranlib
- XRM = rm -f
- XSHELL = /bin/csh
- X
- X# DOS Misc section
- X#A = .lib
- X#AR = lib
- X#ARFLAGS =
- X#BIN = C:\bin
- X#CDEBUG = /Od /Zi
- X#CP = cp
- X#E = .exe
- X#EDITOR = $(BIN)\vi
- X#GFLAGS =
- X#GET = echo cannot get
- X#LDFLAGS = /link /noe /noi $(LIBS)
- X#LD = $(CC) $(CFLAGS)
- X#LIBDIR = c:\msc5.1\lib
- X#MAKE = make
- X#MKDEPEND = mkdepend
- X#MODEL = S
- X#MV = mv
- X#O = .o
- X#RANLIB = echo cannot ranlib
- X#RM = rm -f
- X#SHELL = command /c
- END_OF_FILE
- if test 1578 -ne `wc -c <'default.mk'`; then
- echo shar: \"'default.mk'\" unpacked with wrong size!
- fi
- # end of 'default.mk'
- fi
- if test -f 'make.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'make.h'\"
- else
- echo shar: Extracting \"'make.h'\" \(3322 characters\)
- sed "s/^X//" >'make.h' <<'END_OF_FILE'
- X/*
- X * make.h
- X *
- X * 88-10-01 v1.0 created by greg yachuk, placed in the public domain
- X * 88-10-06 v1.1 changed prerequisite list handling
- X * 88-11-11 v1.2 fixed some bugs and added environment variables
- X * 89-07-12 v1.3 stop appending shell commands, and flush output
- X * 89-08-01 v1.4 AB lots of new options and code
- X * 89-10-30 v1.5 greggy -f -S -q options, took some changes from v1.4
- X *
- X */
- X
- X#define MAKEINI "default.mk"
- X
- X#ifdef MSDOS
- X#define PATH_SEPARATOR ";"
- X#define FILE_SEPARATOR ":/\\"
- X#define SHELL_METAS "<|>"
- X#else
- X#define PATH_SEPARATOR ":"
- X#define FILE_SEPARATOR "/"
- X#define SHELL_METAS "<|>`*?"
- X#endif
- X
- X#define MAXNEGTIME 0x80000000
- X
- X#define equal(s,t) (!strcmp((s),(t)))
- X#define get_target(t) hash_target((t), NULL)
- X#define get_file(f) hash_file((f), NULL)
- X#define append_preq(t,p) (fileptr*)append_node((char**)(t),(char**)(p),sizeof(fileptr*))
- X#define append_shell(t,s) (shellptr*)append_node((char**)(t),(char**)(s),sizeof(shellptr*))
- X
- Xtypedef unsigned short t_mask;
- X
- Xtypedef struct targnode
- X{
- X t_mask tmask; /* mask to avoid string compares */
- X struct targnode *tnext; /* next target in global target list */
- X struct filenode *tfile; /* file node for this target */
- X struct filenode **tpreq;/* pre-req list for this target */
- X struct shellnode **tshell; /* command list for this target */
- X} targnode, *targptr;
- X
- Xtypedef struct filenode
- X{
- X t_mask fmask; /* mask to avoid string compares */
- X char *fname; /* name of this file (targ, preq...) */
- X long ftime; /* last MODIFY time for this file */
- X struct filenode *fnext; /* next file node in global file list */
- X} filenode, *fileptr;
- X
- Xtypedef struct shellnode
- X{
- X char *scmd; /* text of command */
- X unsigned s_silent:1; /* don't echo before executing */
- X unsigned s_ignore:1; /* ignore exit status */
- X unsigned s_shell:1; /* force spawning of command.com */
- X struct shellnode *slink;/* next shell node in global list */
- X} shellnode, *shellptr;
- X
- Xtypedef struct symnode
- X{
- X t_mask smask; /* mask to avoid string compares */
- X char *sname; /* name of a symbol */
- X char *svalue; /* value of a symbol */
- X struct symnode *snext; /* next symbol node in global list */
- X int scmd; /* command line macro? */
- X int slevel; /* level of new_make() */
- X} symnode, *symptr;
- X
- Xtypedef struct optnode
- X{
- X unsigned depend; /* -d */
- X unsigned display:1; /* -D */
- X unsigned envirn:1; /* -e */
- X unsigned ignore:1; /* -i */
- X unsigned keepon:1; /* -k */
- X unsigned noexec:1; /* -n */
- X unsigned query:1; /* -q */
- X unsigned silent:1; /* -s */
- X unsigned touch:1; /* -t */
- X char *make; /* current value of $(MAKE) */
- X} optnode;
- X
- Xextern targptr target_list; /* global list of targets */
- Xextern fileptr file_list; /* global list of file nodes */
- Xextern symptr symbol_list; /* global list of symbol nodes */
- Xextern shellptr shell_list; /* global list of shell nodes */
- X
- Xextern int make_level; /* level of new_make() */
- X
- Xextern targptr first_targ; /* first target (if nothing named) */
- Xextern targptr suffix_targ; /* target node of ".SUFFIXES" */
- X
- Xextern optnode opts; /* various options */
- Xextern char **tlist; /* list of command line targets */
- Xextern long now; /* current time */
- X
- X#define REGISTER register
- X
- X#ifndef MSDOS
- Xchar *getenv();
- X
- X#define P_WAIT 1
- X#define P_NOWAIT 2
- X#define P_OVERLAY 3
- X#endif /* MSDOS */
- END_OF_FILE
- if test 3322 -ne `wc -c <'make.h'`; then
- echo shar: \"'make.h'\" unpacked with wrong size!
- fi
- # end of 'make.h'
- fi
- if test -f 'makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'makefile'\"
- else
- echo shar: Extracting \"'makefile'\" \(1127 characters\)
- sed "s/^X//" >'makefile' <<'END_OF_FILE'
- X# name of this program
- XNAME = make
- X
- X# define the FLAGS as required for MSDOS or Unix
- XCFLAGS = -O
- XLDFLAGS =
- X
- XSRCS = make.c build.c parse.c tstring.c
- XOBJS = make.o build.o parse.o tstring.o
- XPROG = $(NAME)$(EXE)
- X
- X# define your installation directory
- XBIN = $(HOME)/bin
- X
- X# archive utility
- XARCADD = arc a
- X
- X# files to archive
- XARCS = decl.h make.h tstring.h make.c build.c parse.c tstring.c \
- X default.mk default.bsd makefile makefile.bsd make.doc \
- X README $(PROG)
- X
- Xall: $(PROG)
- X
- X$(PROG): $(OBJS)
- X $(CC) $(CFLAGS) $(OBJS) -o $(PROG) $(LDFLAGS)
- X
- Xarc: $(NAME).arc
- X
- X$(NAME).arc: $(ARCS)
- X $(RM) $(NAME).arc
- X $(ARCADD) $(NAME).arc $(ARCS)
- X
- Xinstall: $(BIN)/$(PROG) $(BIN)/default.mk
- X$(BIN)/$(PROG): $(PROG)
- X cp $(PROG) $(BIN)/$(PROG)
- X$(BIN)/default.mk: default.mk
- X cp default.mk $(BIN)/default.mk
- X
- Xclean:
- X $(RM) *.o
- X $(RM) *.bak
- X
- X# use this to check the size of the program (use chkdsk if necessary)
- Xsize:
- X pmap
- X
- Xdepend:
- X $(MKDEPEND) $(SRCS) > makefile.tmp
- X $(MV) makefile.tmp makefile
- X
- X# DO NOT DELETE THIS LINE
- X
- Xmake.o: make.h tstring.h decl.h
- Xbuild.o: make.h tstring.h decl.h
- Xparse.o: make.h tstring.h decl.h
- Xtstring.o: tstring.h
- END_OF_FILE
- if test 1127 -ne `wc -c <'makefile'`; then
- echo shar: \"'makefile'\" unpacked with wrong size!
- fi
- # end of 'makefile'
- fi
- if test -f 'makefile.dos' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'makefile.dos'\"
- else
- echo shar: Extracting \"'makefile.dos'\" \(1245 characters\)
- sed "s/^X//" >'makefile.dos' <<'END_OF_FILE'
- X# name of this program
- XNAME = make
- X
- X# define the FLAGS as required for MSDOS or Unix
- XCFLAGS = /Oals /Gs /G2
- X#CFLAGS = /Od /Zi
- XLDFLAGS = /link /cparmaxalloc:1 /noe /stack:2000
- X
- XSRCS = make.c build.c parse.c tstring.c
- XOBJS = make.o build.o parse.o tstring.o
- XPROG = $(NAME)$(EXE)
- X
- X# define your installation directory
- XBIN = c:/bin
- X
- X# archive utility
- XARCADD = pkarc a
- X
- X# files to archive
- XARC1 = decl.h make.h tstring.h make.c build.c parse.c tstring.c default.mk
- XARC2 = default.bsd makefile makefile.bsd make.doc README $(PROG)
- XARCS = $(ARC1) $(ARC2)
- X
- Xall: $(PROG)
- X
- X$(PROG): $(OBJS)
- X $(CC) $(CFLAGS) $(OBJS) -o $(PROG) $(LDFLAGS)
- X
- Xarc: $(NAME).arc
- X
- X$(NAME).arc: $(ARCS)
- X $(RM) $(NAME).arc
- X $(ARCADD) $(NAME).arc $(ARC1)
- X $(ARCADD) $(NAME).arc $(ARC2)
- X
- Xinstall: $(BIN)/$(PROG) $(BIN)/default.mk
- X$(BIN)/$(PROG): $(PROG)
- X cp $(PROG) $(BIN)/$(PROG)
- X$(BIN)/default.mk: default.mk
- X cp default.mk $(BIN)/default.mk
- X
- Xclean:
- X $(RM) *.o
- X $(RM) *.bak
- X
- X# use this to check the size of the program (use chkdsk if necessary)
- Xsize:
- X pmap
- X
- Xdepend:
- X $(MKDEPEND) $(SRCS) > makefile.tmp
- X $(MV) makefile.tmp makefile
- X
- X# DO NOT DELETE THIS LINE
- X
- Xmake.o: make.h tstring.h decl.h
- Xbuild.o: make.h tstring.h decl.h
- Xparse.o: make.h tstring.h decl.h
- Xtstring.o: tstring.h
- END_OF_FILE
- if test 1245 -ne `wc -c <'makefile.dos'`; then
- echo shar: \"'makefile.dos'\" unpacked with wrong size!
- fi
- # end of 'makefile.dos'
- fi
- if test -f 'tstring.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'tstring.h'\"
- else
- echo shar: Extracting \"'tstring.h'\" \(1257 characters\)
- sed "s/^X//" >'tstring.h' <<'END_OF_FILE'
- X/*
- X * tstring.h
- X *
- X * 88-10-01 v1.0 created by greg yachuk, placed in the public domain
- X * 88-10-06 v1.1 changed prerequisite list handling
- X * 88-11-11 v1.2 fixed some bugs and added environment variables
- X * 89-07-12 v1.3 stop appending shell commands, and flush output
- X * 89-08-01 v1.4 AB lots of new options and code
- X * 89-10-30 v1.5 greggy -f -S -q options, took some changes from v1.4
- X *
- X */
- X#define tnew(t) ((t *) talloc(sizeof(t)))
- X#define tfree(t) (free((char *) t))
- X
- X#define tstrcat(s,p) (strcat(strcpy(talloc(strlen(s)+strlen(p)+1),(s)),(p)))
- X#define tstrcpy(s) (strcpy(talloc(strlen(s)+1), (s)))
- X
- X#ifdef __STDC__
- Xextern char *talloc(int n);
- Xextern char *trealloc(char *s, int n);
- Xextern char *tstrncpy(char *s, int n);
- Xextern int terror(int n, char *s);
- Xextern char *tstrspan(char *str);
- Xextern char *tunquote(char *str);
- Xextern char *tsplit(char *s, char *seps, char **dp);
- Xextern char *token(char *s, char *sep, char *schar);
- Xextern char **tokenize(char *input);
- Xextern char *tgets(FILE * fd);
- X#else
- Xextern char *talloc();
- Xextern char *trealloc();
- Xextern char *tstrncpy();
- Xextern int terror();
- Xextern char *tstrspan();
- Xextern char *tunquote();
- Xextern char *tsplit();
- Xextern char *token();
- Xextern char **tokenize();
- Xextern char *tgets();
- X#endif
- END_OF_FILE
- if test 1257 -ne `wc -c <'tstring.h'`; then
- echo shar: \"'tstring.h'\" unpacked with wrong size!
- fi
- # end of 'tstring.h'
- fi
- echo shar: End of archive 3 \(of 3\).
- cp /dev/null ark3isdone
- MISSING=""
- for I in 1 2 3 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 3 archives.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-
-